<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Irrlicht 3D Engine: irr::scene::IMeshManipulator Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  <td id="projectlogo"><img alt="Logo" src="irrlichtlogo.png"/></td>
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Irrlicht 3D Engine
   
   </div>
   
  </td>
  
  
  
   
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
   
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="dynsections.js"></script>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('classirr_1_1scene_1_1_i_mesh_manipulator.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">irr::scene::IMeshManipulator Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="irr::scene::IMeshManipulator" --><!-- doxytag: inherits="irr::IReferenceCounted" -->
<p>An interface for easy manipulation of meshes.  
 <a href="classirr_1_1scene_1_1_i_mesh_manipulator.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for irr::scene::IMeshManipulator:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
 <div class="center">
  <img src="classirr_1_1scene_1_1_i_mesh_manipulator.png" usemap="#irr::scene::IMeshManipulator_map" alt=""/>
  <map id="irr::scene::IMeshManipulator_map" name="irr::scene::IMeshManipulator_map">
<area href="classirr_1_1_i_reference_counted.html" title="Base class of most objects of the Irrlicht Engine." alt="irr::IReferenceCounted" shape="rect" coords="0,0,172,24"/>
</map>
 </div></div>

<p><a href="classirr_1_1scene_1_1_i_mesh_manipulator-members.html">List of all members.</a></p>
<h2><a name="pub-methods"></a>
Public Member Functions</h2>
<ul>
<li>template&lt;typename Functor &gt; bool <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#aef57a3127b0ed21f2720405b97b399b3">apply</a> (const Functor &amp;func, <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, bool boundingBoxUpdate=false) const 
<dl class="el"><dd class="mdescRight">Apply a manipulator on the Meshbuffer.  <a href="#aef57a3127b0ed21f2720405b97b399b3"></a><br/></dl><li>template&lt;typename Functor &gt; bool <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a9b2f074aaa823c29e94055772a7c3ddb">apply</a> (const Functor &amp;func, <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, bool boundingBoxUpdate=false) const 
<dl class="el"><dd class="mdescRight">Apply a manipulator on the Mesh.  <a href="#a9b2f074aaa823c29e94055772a7c3ddb"></a><br/></dl><li>virtual <a class="el" href="classirr_1_1scene_1_1_i_animated_mesh.html">IAnimatedMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a08c2483575a88f68d099690932c11562">createAnimatedMesh</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, <a class="el" href="namespaceirr_1_1scene.html#a2fc85a64604521ca063f1881b5dd1c61">scene::E_ANIMATED_MESH_TYPE</a> type=scene::EAMT_UNKNOWN) const =0
<dl class="el"><dd class="mdescRight">Create a new AnimatedMesh and adds the mesh to it.  <a href="#a08c2483575a88f68d099690932c11562"></a><br/></dl><li>virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a5003ca5eabee96fe1c871bdb25ae43fd">createForsythOptimizedMesh</a> (const <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Vertex cache optimization according to the Forsyth paper.  <a href="#a5003ca5eabee96fe1c871bdb25ae43fd"></a><br/></dl><li>virtual <a class="el" href="structirr_1_1scene_1_1_s_mesh.html">SMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a3d2e7401f1d43919834a1bfe0b65e77f">createMeshCopy</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Clones a static <a class="el" href="classirr_1_1scene_1_1_i_mesh.html" title="Class which holds the geometry of an object.">IMesh</a> into a modifiable <a class="el" href="structirr_1_1scene_1_1_s_mesh.html" title="Simple implementation of the IMesh interface.">SMesh</a>.  <a href="#a3d2e7401f1d43919834a1bfe0b65e77f"></a><br/></dl><li>virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a73051bc082f128a2e0592fb1a3da2b7d">createMeshUniquePrimitives</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Creates a copy of a mesh with all vertices unwelded.  <a href="#a73051bc082f128a2e0592fb1a3da2b7d"></a><br/></dl><li>virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ac19065037302c0500cb6ebecefcc6c6d">createMeshWelded</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, <a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a> tolerance=<a class="el" href="namespaceirr_1_1core.html#a9514dd34463a30102ef8836915cf9c4c">core::ROUNDING_ERROR_f32</a>) const =0
<dl class="el"><dd class="mdescRight">Creates a copy of a mesh with vertices welded.  <a href="#ac19065037302c0500cb6ebecefcc6c6d"></a><br/></dl><li>virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#af7feb558fbaad9671667d1332c83bb5d">createMeshWith1TCoords</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Creates a copy of the mesh, which will only consist of S3DVertex vertices.  <a href="#af7feb558fbaad9671667d1332c83bb5d"></a><br/></dl><li>virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#abf123f6fece99816be402e1edf70dc13">createMeshWith2TCoords</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Creates a copy of the mesh, which will only consist of S3DVertex2TCoord vertices.  <a href="#abf123f6fece99816be402e1edf70dc13"></a><br/></dl><li>virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> * <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ab849bd2c83b206de1e5da19ce3481e35">createMeshWithTangents</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false, bool recalculateTangents=true) const =0
<dl class="el"><dd class="mdescRight">Creates a copy of the mesh, which will only consist of S3DVertexTangents vertices.  <a href="#ab849bd2c83b206de1e5da19ce3481e35"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a7194e8a44bfe3a6444826f346c4104ff">flipSurfaces</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Flips the direction of surfaces.  <a href="#a7194e8a44bfe3a6444826f346c4104ff"></a><br/></dl><li>virtual <a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a> <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a914c8cbfbde1428dea91b34fe99e716d">getPolyCount</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Get amount of polygons in mesh.  <a href="#a914c8cbfbde1428dea91b34fe99e716d"></a><br/></dl><li>virtual <a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a> <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#af20519dbaa2c2c346e8ddf7c94babc38">getPolyCount</a> (<a class="el" href="classirr_1_1scene_1_1_i_animated_mesh.html">IAnimatedMesh</a> *mesh) const =0
<dl class="el"><dd class="mdescRight">Get amount of polygons in mesh.  <a href="#af20519dbaa2c2c346e8ddf7c94babc38"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a82a3092d53e84e751bb13dac8dfa2ab4">makePlanarTextureMapping</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, <a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a> resolution=0.001f) const =0
<dl class="el"><dd class="mdescRight">Creates a planar texture mapping on the mesh.  <a href="#a82a3092d53e84e751bb13dac8dfa2ab4"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a757511833420a24ed8cbf4dfd6607143">makePlanarTextureMapping</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">scene::IMeshBuffer</a> *meshbuffer, <a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a> resolution=0.001f) const =0
<dl class="el"><dd class="mdescRight">Creates a planar texture mapping on the meshbuffer.  <a href="#a757511833420a24ed8cbf4dfd6607143"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#abc1b4ae56f126e8466ba6f6634a0f723">makePlanarTextureMapping</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">scene::IMesh</a> *mesh, <a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a> resolutionS, <a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a> resolutionT, <a class="el" href="namespaceirr.html#a646874f69af8ff87fc10201b0254a761">u8</a> axis, const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;offset) const =0
<dl class="el"><dd class="mdescRight">Creates a planar texture mapping on the buffer.  <a href="#abc1b4ae56f126e8466ba6f6634a0f723"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a28c9aaddc04baa710138a065457f9df1">makePlanarTextureMapping</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">scene::IMeshBuffer</a> *buffer, <a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a> resolutionS, <a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a> resolutionT, <a class="el" href="namespaceirr.html#a646874f69af8ff87fc10201b0254a761">u8</a> axis, const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;offset) const =0
<dl class="el"><dd class="mdescRight">Creates a planar texture mapping on the meshbuffer.  <a href="#a28c9aaddc04baa710138a065457f9df1"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a8dba16b7eedeac07761c9c1247944429">recalculateNormals</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, bool smooth=false, bool angleWeighted=false) const =0
<dl class="el"><dd class="mdescRight">Recalculates all normals of the mesh.  <a href="#a8dba16b7eedeac07761c9c1247944429"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a94d8390182763e608ca43978b8866d11">recalculateNormals</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, bool smooth=false, bool angleWeighted=false) const =0
<dl class="el"><dd class="mdescRight">Recalculates all normals of the mesh buffer.  <a href="#a94d8390182763e608ca43978b8866d11"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a0ea43e8c4e8489551228b3005d325cd6">recalculateTangents</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false) const =0
<dl class="el"><dd class="mdescRight">Recalculates tangents, requires a tangent mesh.  <a href="#a0ea43e8c4e8489551228b3005d325cd6"></a><br/></dl><li>virtual void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a6bea784eb6cf29bdd771dde3903a2758">recalculateTangents</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false) const =0
<dl class="el"><dd class="mdescRight">Recalculates tangents, requires a tangent mesh buffer.  <a href="#a6bea784eb6cf29bdd771dde3903a2758"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ab32481d2ae93369e223930531186b7e4">scale</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;factor) const 
<dl class="el"><dd class="mdescRight">Scales the actual mesh, not a scene node.  <a href="#ab32481d2ae93369e223930531186b7e4"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ac39f47631c59d75f1e4cfa7a2617ca99">scale</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;factor) const 
<dl class="el"><dd class="mdescRight">Scales the actual meshbuffer, not a scene node.  <a href="#ac39f47631c59d75f1e4cfa7a2617ca99"></a><br/></dl><li>_IRR_DEPRECATED_ void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ae0f814319c18b214be28450d9166a496">scaleMesh</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;factor) const 
<dl class="el"><dd class="mdescRight">Scales the actual mesh, not a scene node.  <a href="#ae0f814319c18b214be28450d9166a496"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#afc1ae4a04d810389e0507d2ce3735e5d">scaleTCoords</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">scene::IMesh</a> *mesh, const <a class="el" href="namespaceirr_1_1core.html#a2cf08556d77f6f5a792973a6e27ed11b">core::vector2df</a> &amp;factor, <a class="el" href="namespaceirr.html#a0416a53257075833e7002efd0a18e804">u32</a> level=1) const 
<dl class="el"><dd class="mdescRight">Scale the texture coords of a mesh.  <a href="#afc1ae4a04d810389e0507d2ce3735e5d"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a9cc3b7555417636c356d22ed0be1d711">scaleTCoords</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">scene::IMeshBuffer</a> *buffer, const <a class="el" href="namespaceirr_1_1core.html#a2cf08556d77f6f5a792973a6e27ed11b">core::vector2df</a> &amp;factor, <a class="el" href="namespaceirr.html#a0416a53257075833e7002efd0a18e804">u32</a> level=1) const 
<dl class="el"><dd class="mdescRight">Scale the texture coords of a meshbuffer.  <a href="#a9cc3b7555417636c356d22ed0be1d711"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ad6492bed9f7cf798b717b30c99803bef">setVertexColorAlpha</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, <a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a> alpha) const 
<dl class="el"><dd class="mdescRight">Sets the alpha vertex color value of the whole mesh to a new value.  <a href="#ad6492bed9f7cf798b717b30c99803bef"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ab98d6493c61620997ad12e3c9fe121a0">setVertexColorAlpha</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, <a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a> alpha) const 
<dl class="el"><dd class="mdescRight">Sets the alpha vertex color value of the whole mesh to a new value.  <a href="#ab98d6493c61620997ad12e3c9fe121a0"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a2c17558cfa1b87000744dce7bf973d21">setVertexColors</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, <a class="el" href="classirr_1_1video_1_1_s_color.html">video::SColor</a> color) const 
<dl class="el"><dd class="mdescRight">Sets the colors of all vertices to one color.  <a href="#a2c17558cfa1b87000744dce7bf973d21"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a156dfdd2d3d89cf6e4e5bc09d1db2079">setVertexColors</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, <a class="el" href="classirr_1_1video_1_1_s_color.html">video::SColor</a> color) const 
<dl class="el"><dd class="mdescRight">Sets the colors of all vertices to one color.  <a href="#a156dfdd2d3d89cf6e4e5bc09d1db2079"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a367ce8914a0453051d82ffd57b343575">transform</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, const <a class="el" href="namespaceirr_1_1core.html#a73fa92e638c5ca97efd72da307cc9b65">core::matrix4</a> &amp;m) const 
<dl class="el"><dd class="mdescRight">Applies a transformation to a mesh.  <a href="#a367ce8914a0453051d82ffd57b343575"></a><br/></dl><li>void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#aa3fd618c6c854a87392a1d902517507f">transform</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, const <a class="el" href="namespaceirr_1_1core.html#a73fa92e638c5ca97efd72da307cc9b65">core::matrix4</a> &amp;m) const 
<dl class="el"><dd class="mdescRight">Applies a transformation to a meshbuffer.  <a href="#aa3fd618c6c854a87392a1d902517507f"></a><br/></dl><li>virtual _IRR_DEPRECATED_ void <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a1c91f352379a910c3276b437fb3b4a96">transformMesh</a> (<a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *mesh, const <a class="el" href="namespaceirr_1_1core.html#a73fa92e638c5ca97efd72da307cc9b65">core::matrix4</a> &amp;m) const 
<dl class="el"><dd class="mdescRight">Applies a transformation to a mesh.  <a href="#a1c91f352379a910c3276b437fb3b4a96"></a><br/></dl></ul>
<h2><a name="pro-methods"></a>
Protected Member Functions</h2>
<ul>
<li>template&lt;typename Functor &gt; bool <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a66b47343a46fdfc1dde7a9c74b54043b">apply_</a> (const Functor &amp;func, <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *buffer, bool boundingBoxUpdate, const <a class="el" href="structirr_1_1scene_1_1_i_vertex_manipulator.html">IVertexManipulator</a> &amp;typeTest) const 
<dl class="el"><dd class="mdescRight">Apply a manipulator based on the type of the functor.  <a href="#a66b47343a46fdfc1dde7a9c74b54043b"></a><br/></dl></ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>An interface for easy manipulation of meshes. </p>
<p>Scale, set alpha value, flip surfaces, and so on. This exists for fixing problems with wrong imported or exported meshes quickly after loading. It is not intended for doing mesh modifications and/or animations during runtime. </p>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00029">29</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="aef57a3127b0ed21f2720405b97b399b3"></a><!-- doxytag: member="irr::scene::IMeshManipulator::apply" ref="aef57a3127b0ed21f2720405b97b399b3" args="(const Functor &amp;func, IMeshBuffer *buffer, bool boundingBoxUpdate=false) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Functor &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool irr::scene::IMeshManipulator::apply </td>
          <td>(</td>
          <td class="paramtype">const Functor &amp;&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>boundingBoxUpdate</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Apply a manipulator on the Meshbuffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">func</td><td>A functor defining the mesh manipulation. </td></tr>
    <tr><td class="paramname">buffer</td><td>The Meshbuffer to apply the manipulator to. </td></tr>
    <tr><td class="paramname">boundingBoxUpdate</td><td>Specifies if the bounding box should be updated during manipulation. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>True if the functor was successfully applied, else false. </dd></dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">304</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00346">apply_()</a>.</p>

<p>Referenced by <a class="el" href="_i_mesh_manipulator_8h_source.html#l00316">apply()</a>, <a class="el" href="_i_mesh_manipulator_8h_source.html#l00108">scale()</a>, <a class="el" href="_i_mesh_manipulator_8h_source.html#l00131">scaleTCoords()</a>, <a class="el" href="_i_mesh_manipulator_8h_source.html#l00042">setVertexColorAlpha()</a>, <a class="el" href="_i_mesh_manipulator_8h_source.html#l00058">setVertexColors()</a>, and <a class="el" href="_i_mesh_manipulator_8h_source.html#l00148">transform()</a>.</p>

</div>
</div>
<a class="anchor" id="a9b2f074aaa823c29e94055772a7c3ddb"></a><!-- doxytag: member="irr::scene::IMeshManipulator::apply" ref="a9b2f074aaa823c29e94055772a7c3ddb" args="(const Functor &amp;func, IMesh *mesh, bool boundingBoxUpdate=false) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Functor &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool irr::scene::IMeshManipulator::apply </td>
          <td>(</td>
          <td class="paramtype">const Functor &amp;&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>boundingBoxUpdate</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Apply a manipulator on the Mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">func</td><td>A functor defining the mesh manipulation. </td></tr>
    <tr><td class="paramname">mesh</td><td>The Mesh to apply the manipulator to. </td></tr>
    <tr><td class="paramname">boundingBoxUpdate</td><td>Specifies if the bounding box should be updated during manipulation. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>True if the functor was successfully applied, else false. </dd></dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00316">316</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="aabbox3d_8h_source.html#l00082">irr::core::aabbox3d&lt; T &gt;::addInternalBox()</a>, <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>, <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html#ac53fe1096756a40f25dae25911e27c51">irr::scene::IMeshBuffer::getBoundingBox()</a>, <a class="el" href="classirr_1_1scene_1_1_i_mesh.html#a2cd1a04b396235101f426befba0c5b82">irr::scene::IMesh::getMeshBuffer()</a>, <a class="el" href="classirr_1_1scene_1_1_i_mesh.html#a2ebed0bdae2d6537c36b0b7ac831edb8">irr::scene::IMesh::getMeshBufferCount()</a>, <a class="el" href="aabbox3d_8h_source.html#l00050">irr::core::aabbox3d&lt; T &gt;::reset()</a>, and <a class="el" href="classirr_1_1scene_1_1_i_mesh.html#a0aee3b5bc5d31ce996becc069f65e642">irr::scene::IMesh::setBoundingBox()</a>.</p>

</div>
</div>
<a class="anchor" id="a66b47343a46fdfc1dde7a9c74b54043b"></a><!-- doxytag: member="irr::scene::IMeshManipulator::apply_" ref="a66b47343a46fdfc1dde7a9c74b54043b" args="(const Functor &amp;func, IMeshBuffer *buffer, bool boundingBoxUpdate, const IVertexManipulator &amp;typeTest) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Functor &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool irr::scene::IMeshManipulator::apply_ </td>
          <td>(</td>
          <td class="paramtype">const Functor &amp;&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>boundingBoxUpdate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structirr_1_1scene_1_1_i_vertex_manipulator.html">IVertexManipulator</a> &amp;&#160;</td>
          <td class="paramname"><em>typeTest</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Apply a manipulator based on the type of the functor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">func</td><td>A functor defining the mesh manipulation. </td></tr>
    <tr><td class="paramname">buffer</td><td>The Meshbuffer to apply the manipulator to. </td></tr>
    <tr><td class="paramname">boundingBoxUpdate</td><td>Specifies if the bounding box should be updated during manipulation. </td></tr>
    <tr><td class="paramname">typeTest</td><td>Unused parameter, which handles the proper call selection based on the type of the Functor which is passed in two times. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>True if the functor was successfully applied, else false. </dd></dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00346">346</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="aabbox3d_8h_source.html#l00074">irr::core::aabbox3d&lt; T &gt;::addInternalPoint()</a>, <a class="el" href="_s3_d_vertex_8h_source.html#l00025">irr::video::EVT_2TCOORDS</a>, <a class="el" href="_s3_d_vertex_8h_source.html#l00021">irr::video::EVT_STANDARD</a>, <a class="el" href="_s3_d_vertex_8h_source.html#l00029">irr::video::EVT_TANGENTS</a>, <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html#a79ca051edc0ece69057fda7b4fe1e155">irr::scene::IMeshBuffer::getPosition()</a>, <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html#a77ab285c8c886af8ddeb0371db7bde96">irr::scene::IMeshBuffer::getVertexCount()</a>, <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html#a4d7a84ae4416487736f0ed0f519bb4f0">irr::scene::IMeshBuffer::getVertexType()</a>, <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html#a99891e516246b2cff13b362a435c8028">irr::scene::IMeshBuffer::getVertices()</a>, <a class="el" href="aabbox3d_8h_source.html#l00050">irr::core::aabbox3d&lt; T &gt;::reset()</a>, and <a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html#adbbfb7757dfbba7357193d2280893df6">irr::scene::IMeshBuffer::setBoundingBox()</a>.</p>

<p>Referenced by <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="a08c2483575a88f68d099690932c11562"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createAnimatedMesh" ref="a08c2483575a88f68d099690932c11562" args="(IMesh *mesh, scene::E_ANIMATED_MESH_TYPE type=scene::EAMT_UNKNOWN) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classirr_1_1scene_1_1_i_animated_mesh.html">IAnimatedMesh</a>* irr::scene::IMeshManipulator::createAnimatedMesh </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr_1_1scene.html#a2fc85a64604521ca063f1881b5dd1c61">scene::E_ANIMATED_MESH_TYPE</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>scene::EAMT_UNKNOWN</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new AnimatedMesh and adds the mesh to it. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
    <tr><td class="paramname">type</td><td>The type of the animated mesh to create. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Newly created animated mesh with mesh as its only content. When you don't need the animated mesh anymore, you should call <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IAnimatedMesh::drop()</a>. See <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IReferenceCounted::drop()</a> for more information. </dd></dl>

</div>
</div>
<a class="anchor" id="a5003ca5eabee96fe1c871bdb25ae43fd"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createForsythOptimizedMesh" ref="a5003ca5eabee96fe1c871bdb25ae43fd" args="(const IMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a>* irr::scene::IMeshManipulator::createForsythOptimizedMesh </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Vertex cache optimization according to the Forsyth paper. </p>
<p>More information can be found at <a href="http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html">http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html</a></p>
<p>The function is thread-safe (read: you can optimize several meshes in different threads).</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Source mesh for the operation. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A new mesh optimized for the vertex cache. </dd></dl>

</div>
</div>
<a class="anchor" id="a3d2e7401f1d43919834a1bfe0b65e77f"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createMeshCopy" ref="a3d2e7401f1d43919834a1bfe0b65e77f" args="(IMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structirr_1_1scene_1_1_s_mesh.html">SMesh</a>* irr::scene::IMeshManipulator::createMeshCopy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Clones a static <a class="el" href="classirr_1_1scene_1_1_i_mesh.html" title="Class which holds the geometry of an object.">IMesh</a> into a modifiable <a class="el" href="structirr_1_1scene_1_1_s_mesh.html" title="Simple implementation of the IMesh interface.">SMesh</a>. </p>
<p>All meshbuffers in the returned <a class="el" href="structirr_1_1scene_1_1_s_mesh.html" title="Simple implementation of the IMesh interface.">SMesh</a> are of type SMeshBuffer or SMeshBufferLightMap. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh to copy. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Cloned mesh. If you no longer need the cloned mesh, you should call <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">SMesh::drop()</a>. See <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IReferenceCounted::drop()</a> for more information. </dd></dl>

</div>
</div>
<a class="anchor" id="a73051bc082f128a2e0592fb1a3da2b7d"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createMeshUniquePrimitives" ref="a73051bc082f128a2e0592fb1a3da2b7d" args="(IMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a>* irr::scene::IMeshManipulator::createMeshUniquePrimitives </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a copy of a mesh with all vertices unwelded. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Mesh consisting only of unique faces. All vertices which were previously shared are now duplicated. If you no longer need the cloned mesh, you should call <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IMesh::drop()</a>. See <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IReferenceCounted::drop()</a> for more information. </dd></dl>

</div>
</div>
<a class="anchor" id="ac19065037302c0500cb6ebecefcc6c6d"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createMeshWelded" ref="ac19065037302c0500cb6ebecefcc6c6d" args="(IMesh *mesh, f32 tolerance=core::ROUNDING_ERROR_f32) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a>* irr::scene::IMeshManipulator::createMeshWelded </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a>&#160;</td>
          <td class="paramname"><em>tolerance</em> = <code><a class="el" href="namespaceirr_1_1core.html#a9514dd34463a30102ef8836915cf9c4c">core::ROUNDING_ERROR_f32</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a copy of a mesh with vertices welded. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
    <tr><td class="paramname">tolerance</td><td>The threshold for vertex comparisons. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Mesh without redundant vertices. If you no longer need the cloned mesh, you should call <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IMesh::drop()</a>. See <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IReferenceCounted::drop()</a> for more information. </dd></dl>

</div>
</div>
<a class="anchor" id="af7feb558fbaad9671667d1332c83bb5d"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createMeshWith1TCoords" ref="af7feb558fbaad9671667d1332c83bb5d" args="(IMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a>* irr::scene::IMeshManipulator::createMeshWith1TCoords </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a copy of the mesh, which will only consist of S3DVertex vertices. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Mesh consisting only of S3DVertex vertices. If you no longer need the cloned mesh, you should call <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IMesh::drop()</a>. See <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IReferenceCounted::drop()</a> for more information. </dd></dl>

</div>
</div>
<a class="anchor" id="abf123f6fece99816be402e1edf70dc13"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createMeshWith2TCoords" ref="abf123f6fece99816be402e1edf70dc13" args="(IMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a>* irr::scene::IMeshManipulator::createMeshWith2TCoords </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a copy of the mesh, which will only consist of S3DVertex2TCoord vertices. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Mesh consisting only of S3DVertex2TCoord vertices. If you no longer need the cloned mesh, you should call <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IMesh::drop()</a>. See <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IReferenceCounted::drop()</a> for more information. </dd></dl>

</div>
</div>
<a class="anchor" id="ab849bd2c83b206de1e5da19ce3481e35"></a><!-- doxytag: member="irr::scene::IMeshManipulator::createMeshWithTangents" ref="ab849bd2c83b206de1e5da19ce3481e35" args="(IMesh *mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false, bool recalculateTangents=true) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a>* irr::scene::IMeshManipulator::createMeshWithTangents </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>recalculateNormals</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>smooth</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>angleWeighted</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>recalculateTangents</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a copy of the mesh, which will only consist of S3DVertexTangents vertices. </p>
<p>This is useful if you want to draw tangent space normal mapped geometry because it calculates the tangent and binormal data which is needed there. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
    <tr><td class="paramname">recalculateNormals</td><td>The normals are recalculated if set, otherwise the original ones are kept. Note that keeping the normals may introduce inaccurate tangents if the normals are very different to those calculated from the faces. </td></tr>
    <tr><td class="paramname">smooth</td><td>The normals/tangents are smoothed across the meshbuffer's faces if this flag is set. </td></tr>
    <tr><td class="paramname">angleWeighted</td><td>Improved smoothing calculation used </td></tr>
    <tr><td class="paramname">recalculateTangents</td><td>Whether are actually calculated, or just the mesh with proper type is created. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Mesh consisting only of S3DVertexTangents vertices. If you no longer need the cloned mesh, you should call <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IMesh::drop()</a>. See <a class="el" href="classirr_1_1_i_reference_counted.html#afb169a857e0d2cdb96b8821cb9bff17a" title="Drops the object. Decrements the reference counter by one.">IReferenceCounted::drop()</a> for more information. </dd></dl>

</div>
</div>
<a class="anchor" id="a7194e8a44bfe3a6444826f346c4104ff"></a><!-- doxytag: member="irr::scene::IMeshManipulator::flipSurfaces" ref="a7194e8a44bfe3a6444826f346c4104ff" args="(IMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::flipSurfaces </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Flips the direction of surfaces. </p>
<p>Changes backfacing triangles to frontfacing triangles and vice versa. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a914c8cbfbde1428dea91b34fe99e716d"></a><!-- doxytag: member="irr::scene::IMeshManipulator::getPolyCount" ref="a914c8cbfbde1428dea91b34fe99e716d" args="(IMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a> irr::scene::IMeshManipulator::getPolyCount </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get amount of polygons in mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of polygons in mesh. </dd></dl>

</div>
</div>
<a class="anchor" id="af20519dbaa2c2c346e8ddf7c94babc38"></a><!-- doxytag: member="irr::scene::IMeshManipulator::getPolyCount" ref="af20519dbaa2c2c346e8ddf7c94babc38" args="(IAnimatedMesh *mesh) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a> irr::scene::IMeshManipulator::getPolyCount </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_animated_mesh.html">IAnimatedMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get amount of polygons in mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Input mesh </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of polygons in mesh. </dd></dl>

</div>
</div>
<a class="anchor" id="a82a3092d53e84e751bb13dac8dfa2ab4"></a><!-- doxytag: member="irr::scene::IMeshManipulator::makePlanarTextureMapping" ref="a82a3092d53e84e751bb13dac8dfa2ab4" args="(IMesh *mesh, f32 resolution=0.001f) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::makePlanarTextureMapping </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a>&#160;</td>
          <td class="paramname"><em>resolution</em> = <code>0.001f</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a planar texture mapping on the mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh,:</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">resolution,:</td><td>resolution of the planar mapping. This is the value specifying which is the relation between world space and texture coordinate space. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a757511833420a24ed8cbf4dfd6607143"></a><!-- doxytag: member="irr::scene::IMeshManipulator::makePlanarTextureMapping" ref="a757511833420a24ed8cbf4dfd6607143" args="(scene::IMeshBuffer *meshbuffer, f32 resolution=0.001f) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::makePlanarTextureMapping </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">scene::IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>meshbuffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a>&#160;</td>
          <td class="paramname"><em>resolution</em> = <code>0.001f</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a planar texture mapping on the meshbuffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">meshbuffer,:</td><td>Buffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">resolution,:</td><td>resolution of the planar mapping. This is the value specifying which is the relation between world space and texture coordinate space. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="abc1b4ae56f126e8466ba6f6634a0f723"></a><!-- doxytag: member="irr::scene::IMeshManipulator::makePlanarTextureMapping" ref="abc1b4ae56f126e8466ba6f6634a0f723" args="(scene::IMesh *mesh, f32 resolutionS, f32 resolutionT, u8 axis, const core::vector3df &amp;offset) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::makePlanarTextureMapping </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">scene::IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a>&#160;</td>
          <td class="paramname"><em>resolutionS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a>&#160;</td>
          <td class="paramname"><em>resolutionT</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a646874f69af8ff87fc10201b0254a761">u8</a>&#160;</td>
          <td class="paramname"><em>axis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;&#160;</td>
          <td class="paramname"><em>offset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a planar texture mapping on the buffer. </p>
<p>This method is currently implemented towards the LWO planar mapping. A more general biasing might be required. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">resolutionS</td><td>Resolution of the planar mapping in horizontal direction. This is the ratio between object space and texture space. </td></tr>
    <tr><td class="paramname">resolutionT</td><td>Resolution of the planar mapping in vertical direction. This is the ratio between object space and texture space. </td></tr>
    <tr><td class="paramname">axis</td><td>The axis along which the texture is projected. The allowed values are 0 (X), 1(Y), and 2(Z). </td></tr>
    <tr><td class="paramname">offset</td><td>Vector added to the vertex positions (in object coordinates). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a28c9aaddc04baa710138a065457f9df1"></a><!-- doxytag: member="irr::scene::IMeshManipulator::makePlanarTextureMapping" ref="a28c9aaddc04baa710138a065457f9df1" args="(scene::IMeshBuffer *buffer, f32 resolutionS, f32 resolutionT, u8 axis, const core::vector3df &amp;offset) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::makePlanarTextureMapping </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">scene::IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a>&#160;</td>
          <td class="paramname"><em>resolutionS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0277be98d67dc26ff93b1a6a1d086b07">f32</a>&#160;</td>
          <td class="paramname"><em>resolutionT</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a646874f69af8ff87fc10201b0254a761">u8</a>&#160;</td>
          <td class="paramname"><em>axis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;&#160;</td>
          <td class="paramname"><em>offset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a planar texture mapping on the meshbuffer. </p>
<p>This method is currently implemented towards the LWO planar mapping. A more general biasing might be required. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer</td><td>Buffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">resolutionS</td><td>Resolution of the planar mapping in horizontal direction. This is the ratio between object space and texture space. </td></tr>
    <tr><td class="paramname">resolutionT</td><td>Resolution of the planar mapping in vertical direction. This is the ratio between object space and texture space. </td></tr>
    <tr><td class="paramname">axis</td><td>The axis along which the texture is projected. The allowed values are 0 (X), 1(Y), and 2(Z). </td></tr>
    <tr><td class="paramname">offset</td><td>Vector added to the vertex positions (in object coordinates). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8dba16b7eedeac07761c9c1247944429"></a><!-- doxytag: member="irr::scene::IMeshManipulator::recalculateNormals" ref="a8dba16b7eedeac07761c9c1247944429" args="(IMesh *mesh, bool smooth=false, bool angleWeighted=false) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::recalculateNormals </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>smooth</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>angleWeighted</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Recalculates all normals of the mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh,:</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">smooth,:</td><td>If the normals shall be smoothed. </td></tr>
    <tr><td class="paramname">angleWeighted,:</td><td>If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a94d8390182763e608ca43978b8866d11"></a><!-- doxytag: member="irr::scene::IMeshManipulator::recalculateNormals" ref="a94d8390182763e608ca43978b8866d11" args="(IMeshBuffer *buffer, bool smooth=false, bool angleWeighted=false) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::recalculateNormals </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>smooth</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>angleWeighted</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Recalculates all normals of the mesh buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer,:</td><td>Mesh buffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">smooth,:</td><td>If the normals shall be smoothed. </td></tr>
    <tr><td class="paramname">angleWeighted,:</td><td>If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0ea43e8c4e8489551228b3005d325cd6"></a><!-- doxytag: member="irr::scene::IMeshManipulator::recalculateTangents" ref="a0ea43e8c4e8489551228b3005d325cd6" args="(IMesh *mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::recalculateTangents </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>recalculateNormals</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>smooth</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>angleWeighted</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Recalculates tangents, requires a tangent mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">recalculateNormals</td><td>If the normals shall be recalculated, otherwise original normals of the mesh are used unchanged. </td></tr>
    <tr><td class="paramname">smooth</td><td>If the normals shall be smoothed. </td></tr>
    <tr><td class="paramname">angleWeighted</td><td>If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6bea784eb6cf29bdd771dde3903a2758"></a><!-- doxytag: member="irr::scene::IMeshManipulator::recalculateTangents" ref="a6bea784eb6cf29bdd771dde3903a2758" args="(IMeshBuffer *buffer, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::scene::IMeshManipulator::recalculateTangents </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>recalculateNormals</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>smooth</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>angleWeighted</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Recalculates tangents, requires a tangent mesh buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer</td><td>Meshbuffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">recalculateNormals</td><td>If the normals shall be recalculated, otherwise original normals of the buffer are used unchanged. </td></tr>
    <tr><td class="paramname">smooth</td><td>If the normals shall be smoothed. </td></tr>
    <tr><td class="paramname">angleWeighted</td><td>If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab32481d2ae93369e223930531186b7e4"></a><!-- doxytag: member="irr::scene::IMeshManipulator::scale" ref="ab32481d2ae93369e223930531186b7e4" args="(IMesh *mesh, const core::vector3df &amp;factor) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::scale </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;&#160;</td>
          <td class="paramname"><em>factor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scales the actual mesh, not a scene node. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">factor</td><td>Scale factor for each axis. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00108">108</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

<p>Referenced by <a class="el" href="_i_mesh_manipulator_8h_source.html#l00125">scaleMesh()</a>.</p>

</div>
</div>
<a class="anchor" id="ac39f47631c59d75f1e4cfa7a2617ca99"></a><!-- doxytag: member="irr::scene::IMeshManipulator::scale" ref="ac39f47631c59d75f1e4cfa7a2617ca99" args="(IMeshBuffer *buffer, const core::vector3df &amp;factor) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::scale </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;&#160;</td>
          <td class="paramname"><em>factor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scales the actual meshbuffer, not a scene node. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer</td><td>Meshbuffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">factor</td><td>Scale factor for each axis. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00116">116</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="ae0f814319c18b214be28450d9166a496"></a><!-- doxytag: member="irr::scene::IMeshManipulator::scaleMesh" ref="ae0f814319c18b214be28450d9166a496" args="(IMesh *mesh, const core::vector3df &amp;factor) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">_IRR_DEPRECATED_ void irr::scene::IMeshManipulator::scaleMesh </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a06f169d08b5c429f5575acb7edbad811">core::vector3df</a> &amp;&#160;</td>
          <td class="paramname"><em>factor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scales the actual mesh, not a scene node. </p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000014">Deprecated:</a></b></dt><dd>Use <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#ab32481d2ae93369e223930531186b7e4" title="Scales the actual mesh, not a scene node.">scale()</a> instead. This method may be removed by Irrlicht 1.9 </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">factor</td><td>Scale factor for each axis. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00125">125</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00108">scale()</a>.</p>

</div>
</div>
<a class="anchor" id="afc1ae4a04d810389e0507d2ce3735e5d"></a><!-- doxytag: member="irr::scene::IMeshManipulator::scaleTCoords" ref="afc1ae4a04d810389e0507d2ce3735e5d" args="(scene::IMesh *mesh, const core::vector2df &amp;factor, u32 level=1) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::scaleTCoords </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">scene::IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a2cf08556d77f6f5a792973a6e27ed11b">core::vector2df</a> &amp;&#160;</td>
          <td class="paramname"><em>factor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0416a53257075833e7002efd0a18e804">u32</a>&#160;</td>
          <td class="paramname"><em>level</em> = <code>1</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scale the texture coords of a mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">factor</td><td>Vector which defines the scale for each axis. </td></tr>
    <tr><td class="paramname">level</td><td>Number of texture coord, starting from 1. Support for level 2 exists for LightMap buffers. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00131">131</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="a9cc3b7555417636c356d22ed0be1d711"></a><!-- doxytag: member="irr::scene::IMeshManipulator::scaleTCoords" ref="a9cc3b7555417636c356d22ed0be1d711" args="(scene::IMeshBuffer *buffer, const core::vector2df &amp;factor, u32 level=1) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::scaleTCoords </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">scene::IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a2cf08556d77f6f5a792973a6e27ed11b">core::vector2df</a> &amp;&#160;</td>
          <td class="paramname"><em>factor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#a0416a53257075833e7002efd0a18e804">u32</a>&#160;</td>
          <td class="paramname"><em>level</em> = <code>1</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scale the texture coords of a meshbuffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer</td><td>Meshbuffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">factor</td><td>Vector which defines the scale for each axis. </td></tr>
    <tr><td class="paramname">level</td><td>Number of texture coord, starting from 1. Support for level 2 exists for LightMap buffers. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00140">140</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="ad6492bed9f7cf798b717b30c99803bef"></a><!-- doxytag: member="irr::scene::IMeshManipulator::setVertexColorAlpha" ref="ad6492bed9f7cf798b717b30c99803bef" args="(IMesh *mesh, s32 alpha) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::setVertexColorAlpha </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a>&#160;</td>
          <td class="paramname"><em>alpha</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the alpha vertex color value of the whole mesh to a new value. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">alpha</td><td>New alpha value. Must be a value between 0 and 255. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00042">42</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="ab98d6493c61620997ad12e3c9fe121a0"></a><!-- doxytag: member="irr::scene::IMeshManipulator::setVertexColorAlpha" ref="ab98d6493c61620997ad12e3c9fe121a0" args="(IMeshBuffer *buffer, s32 alpha) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::setVertexColorAlpha </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#ac66849b7a6ed16e30ebede579f9b47c6">s32</a>&#160;</td>
          <td class="paramname"><em>alpha</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the alpha vertex color value of the whole mesh to a new value. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer</td><td>Meshbuffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">alpha</td><td>New alpha value. Must be a value between 0 and 255. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00050">50</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="a2c17558cfa1b87000744dce7bf973d21"></a><!-- doxytag: member="irr::scene::IMeshManipulator::setVertexColors" ref="a2c17558cfa1b87000744dce7bf973d21" args="(IMesh *mesh, video::SColor color) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::setVertexColors </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classirr_1_1video_1_1_s_color.html">video::SColor</a>&#160;</td>
          <td class="paramname"><em>color</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the colors of all vertices to one color. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">color</td><td>New color. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00058">58</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="a156dfdd2d3d89cf6e4e5bc09d1db2079"></a><!-- doxytag: member="irr::scene::IMeshManipulator::setVertexColors" ref="a156dfdd2d3d89cf6e4e5bc09d1db2079" args="(IMeshBuffer *buffer, video::SColor color) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::setVertexColors </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classirr_1_1video_1_1_s_color.html">video::SColor</a>&#160;</td>
          <td class="paramname"><em>color</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the colors of all vertices to one color. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer</td><td>Meshbuffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">color</td><td>New color. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00066">66</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="a367ce8914a0453051d82ffd57b343575"></a><!-- doxytag: member="irr::scene::IMeshManipulator::transform" ref="a367ce8914a0453051d82ffd57b343575" args="(IMesh *mesh, const core::matrix4 &amp;m) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::transform </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a73fa92e638c5ca97efd72da307cc9b65">core::matrix4</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Applies a transformation to a mesh. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">m</td><td>transformation matrix. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00148">148</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

<p>Referenced by <a class="el" href="_i_mesh_manipulator_8h_source.html#l00165">transformMesh()</a>.</p>

</div>
</div>
<a class="anchor" id="aa3fd618c6c854a87392a1d902517507f"></a><!-- doxytag: member="irr::scene::IMeshManipulator::transform" ref="aa3fd618c6c854a87392a1d902517507f" args="(IMeshBuffer *buffer, const core::matrix4 &amp;m) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void irr::scene::IMeshManipulator::transform </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh_buffer.html">IMeshBuffer</a> *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a73fa92e638c5ca97efd72da307cc9b65">core::matrix4</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Applies a transformation to a meshbuffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buffer</td><td>Meshbuffer on which the operation is performed. </td></tr>
    <tr><td class="paramname">m</td><td>transformation matrix. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00156">156</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00304">apply()</a>.</p>

</div>
</div>
<a class="anchor" id="a1c91f352379a910c3276b437fb3b4a96"></a><!-- doxytag: member="irr::scene::IMeshManipulator::transformMesh" ref="a1c91f352379a910c3276b437fb3b4a96" args="(IMesh *mesh, const core::matrix4 &amp;m) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual _IRR_DEPRECATED_ void irr::scene::IMeshManipulator::transformMesh </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1scene_1_1_i_mesh.html">IMesh</a> *&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceirr_1_1core.html#a73fa92e638c5ca97efd72da307cc9b65">core::matrix4</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Applies a transformation to a mesh. </p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000015">Deprecated:</a></b></dt><dd>Use <a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html#a367ce8914a0453051d82ffd57b343575" title="Applies a transformation to a mesh.">transform()</a> instead. This method may be removed by Irrlicht 1.9 </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>Mesh on which the operation is performed. </td></tr>
    <tr><td class="paramname">m</td><td>transformation matrix. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_i_mesh_manipulator_8h_source.html#l00165">165</a> of file <a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a>.</p>

<p>References <a class="el" href="_i_mesh_manipulator_8h_source.html#l00148">transform()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_i_mesh_manipulator_8h_source.html">IMeshManipulator.h</a></li>
</ul>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceirr.html">irr</a>      </li>
      <li class="navelem"><a class="el" href="namespaceirr_1_1scene.html">scene</a>      </li>
      <li class="navelem"><a class="el" href="classirr_1_1scene_1_1_i_mesh_manipulator.html">IMeshManipulator</a>      </li>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>


    <li class="footer">
<a href="http://irrlicht.sourceforge.net" target="_blank">Irrlicht 
Engine</a> Documentation &copy; 2003-2012 by Nikolaus Gebhardt. Generated on Sat Jul 9 2016 18:18:38 for Irrlicht 3D Engine by
<a href="http://www.doxygen.org/index.html" target="_blank">Doxygen</a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
